Block-alterable memories, such as flash memories, are often used for applications in which non-volatility and programmability are desired. Flash memory is a high-speed electrically erasable programmable read-only memory (EEPROM) in which erasing and programming (i.e., writing) is performed on blocks of data.
Systems using block-alterable memories such as flash memory typically require the use of management software to interface to the memory. This software incorporates varying levels of data management to facilitate efficient memory usage. For example, the software commonly reserves one or more main array blocks to be used for manipulation of data. In the event that data is deleted within a block containing valid data, the valid data is copied to an erased block and the block containing dirty data is subsequently erased. This process is called reclaim. In reclaim operations, software chooses the block to be reclaimed and does the actual copying over of the data from the dirty block to the spare block and then erases the dirty block.
Users desire that block-alterable memories accurately store and retrieve data and operate quickly. Erasing and reclaiming blocks of such memories takes a relatively long time. A need exists for maximizing user perceived reliability and minimizing user perceived erase and reclaim times of block-alterable memories. Further, a need exists to perform such activities using hardware.